﻿using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json.Linq;
using StudentManager.API.BLL;
using StudentManager.API.ViewMode;

namespace StudentManager.API.Controllers
{
    [Route("[controller]/[action]")]
    [ApiController]
    public class ZwhUserinfoController(zwhUserinfoBO ZwhUserBO) : ControllerBase
    {
        #region 添加单条学生信息
        /// <summary>
        /// 添加单条学生信息
        /// </summary>
        /// <param name="model">学生信息模型</param>
        /// <returns>操作结果</returns> 
        [HttpPost]
        public IActionResult Insert(ZwhUser model)
        {
            // 检查传入的学生信息模型是否为空，如果为空则返回失败结果
            if (model == null) return Ok(Result.Fail());

            // 调用业务逻辑层（BLL）添加学生信息
            return Ok(ZwhUserBO.Insert(model));
        }
        #endregion

        #region 修改单条学生信息
        /// <summary>
        /// 修改单条学生信息
        /// </summary>
        /// <param name="model">学生信息模型</param>
        /// <returns>操作结果</returns> 
        [HttpPut]
        public IActionResult Update(ZwhUser model)
        {
            // 检查传入的学生信息模型是否为空，如果为空则返回失败结果
            if (model == null) return Ok(Result.Fail());

            // 调用业务逻辑层（BLL）修改学生信息
            return Ok(ZwhUserBO.Update(model));
        }
        #endregion

        #region 删除单条学生信息
        /// <summary>
        /// 删除单条学生信息
        /// </summary>
        /// <param name="studentID">学生ID</param>
        /// <returns>操作结果</returns>
        [HttpDelete]
        public IActionResult Delete(int studentID)
        {
            // 调用业务逻辑层（BLL）删除学生信息
            return Ok(ZwhUserBO.Delete(studentID));
        }
        #endregion

        #region 查询单条学生信息
        /// <summary>
        /// 查询单条学生信息
        /// </summary>
        /// <param name="studentID">学生ID</param>
        /// <returns>学生信息</returns>  
        [HttpGet]
        public IActionResult GetInfo(int studentID)
        {
            // 调用业务逻辑层（BLL）获取所有学生数据
            return Ok(ZwhUserBO.GetInfo(studentID));
        }
        #endregion

        #region 多条件查询单条学生信息
        /// <summary>
        /// 多条件查询单条学生信息
        /// </summary>
        /// <param name="condition">多条件</param>
        /// <returns>学生信息</returns>  
        [HttpPost]
        public IActionResult GetInfo([FromBody] JObject condition)
        {
            // 调用业务逻辑层（BLL）获取满足条件的学生数据
            return Ok(ZwhUserBO.GetInfo(condition));
        }
        #endregion

        #region 获取所有学生信息
        /// <summary>
        /// 获取所有学生信息
        /// </summary>
        /// <returns>学生列表</returns>
        [HttpPost]
        public IActionResult GetAllList([FromBody] JObject? condition = null)
        {
            // 调用业务逻辑层（BLL）获取所有学生数据
            return Ok(ZwhUserBO.GetAllList(condition));
        }
        #endregion

        #region 分页查询学生信息
        /// <summary>
        /// 分页查询学生信息
        /// </summary> 
        /// <param name="model">学生信息模型</param>
        /// <returns>分页学生列表</returns>
        [HttpPost]
        public IActionResult PagedList([FromBody] PagedListReq model)
        {
            // 调用业务逻辑层（BLL）分页查询学生信息
            return Ok(ZwhUserBO.PagedList(model.pageIndex, model.pageSize, model?.condition ?? null));
        }
        #endregion

    }
}
